<html>
    <head>
        <title>IAuthorzationService接口</title>
    </head>
    <body>
        <script>
             //  三、 IAuhorizationService 授权服务接口 (此接口是来自.net core 的授权服务)

                        /*
                                asp.net core 提供了可用于检查权限的 IAuthorizationService 服务。
                                一旦注入此服务，就可以在代码中使用它来 "有条件的控制授权"

                                eg：
                                    public async Task CreateAsync(CreateAuthorDto input)
                                    {
                                        var result = await AuthorizationService.AuthorizeAsync("Author_Management_Create_Books")；

                                        if(result.Succeeded==false)
                                        {
                                             //抛出授权异常
                                             throw new AbpAuthorizationException("...");
                                        }
                                    }

                                AuthorizationService在你的ABP 应用服务类(继承自ApplicationService)有一个同名的属性(来自ApplicationService基类)。
                                因为在应用层的服务中经常要用，所有ABP就把他放在了ApplicationService基类中。

                                所以，上面的代码可以简化为：
                                    public async Task CreateAsync(CreateAuthorDto input)
                                    {
                                        // CheckAsync 为扩展方法，会抛出AbpAuthorizationException。
                                        // 还有IsGrantedAsync扩展方法,返回true或false
                                        await AuthorizationService.CheckAsync("Author_Management_Create_Books")； // 抛出异常，无需捕获(自动抛出AbpAuthorizationException异常)



                                        // 正常的执行流......
                                    }

                                // IAuthorizationService对AuthorizeAsync方法有一些重载。这些在ASP.NET Core 文档中有描述。
                        */
        </script>
    </body>
</html>